package org.jooby.issues;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import org.jooby.Err;
import org.jooby.test.ServerFeature;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import com.ning.http.client.AsyncHttpClient;
import com.ning.http.client.AsyncHttpClientConfig;
import com.ning.http.client.ws.WebSocket;
import com.ning.http.client.ws.WebSocketUpgradeHandler;
public class Issue636 extends ServerFeature {
private static CountDownLatch closeLatch;
{
ws("/636", ws -> {
ws.onClose(status -> {
try {
ws.send("636");
} catch (Err x) {
closeLatch.countDown();
}
});
});
}
private AsyncHttpClient client;
@Before
public void before() {
client = new AsyncHttpClient(new AsyncHttpClientConfig.Builder().build());
}
@After
public void after() {
client.close();
}
@Test
public void sendClose() throws Exception {
closeLatch = new CountDownLatch(1);
WebSocket ws = client.prepareGet(ws("636").toString())
.execute(new WebSocketUpgradeHandler.Builder().build())
.get();
ws.sendMessage("foo");
Thread.sleep(100L);
ws.close();
Thread.sleep(100L);
closeLatch.await(1L, TimeUnit.SECONDS);
}
}